package repository

import (
	"ruoyi/domain/entity/common"
	"ruoyi/domain/entity/response"
	"ruoyi/domain/entity/system"
)

type SysMenuRepository interface {
	SelectMenuTreeByUserId(userId int) []system.SysMenu

	SelectMenuTree(userId int, menu system.SysMenu) []system.SysMenu

	BuildMenuTreeSelect(lists []system.SysMenu) []system.MenuTreeSelect

	BuildChildMenusTreeSelect(ParentId int, lists []system.SysMenu) []system.MenuTreeSelect

	BuildMenus(lists []system.SysMenu) []system.MenuVo

	BuildChildMenus(ParentId int, lists []system.SysMenu) []system.MenuVo

	SelectSysMenuList(params common.SearchTableDataParam) []system.SysMenu

	SelectMenuListByRoleId(roleId string, menuCheckStrictly bool) []int

	SelectSysMenuListByUserId(userId int, params common.SearchTableDataParam) []system.SysMenu

	FindMenuInfoById(menuId string) system.SysMenu

	DeleteMenu(menuIds string) response.Response

	AddMenu(sysMenu system.SysMenu) response.Response

	UpdateMenu(sysMenu system.SysMenu) response.Response
}
